草庐IT

mysql GRANT + WHERE

全部标签

mysql - 如何使用 MySQL 2 在 Rails 3 项目中使用 WHERE IN?

我是Rails的新手,对SQL类语言的经验很少。我正在使用MySQL2开发Rails3项目我这里有一个通用的SQL语句,我想在我们的两个数据库上都使用它。有什么方法可以仅通过ActiveRecord功能来做到这一点吗?SELECT*FROMMyRecordsWHERE(f1,f2,f3,f4)IN(SELECTf1,f2,f3,f4FROMMyRecordsGROUPBYf1,f2,f3,f4HAVINGcount(*)=1);换句话说,我正在尝试执行“WHEREIN”语句(坦率地说,我什至不知道WHEREIN语句的作用,只是这个答案满足了我的需要:我如何(或者我可以)在多列上选择DI

mysql float 数据没有在where子句中选择

这可能是一个简单的问题,但我无法得到答案。我需要从表中选择浮点值示例表:-value10.24.54.64.06我的问题SELECT*FROMtablewherevalue='4.6'返回空结果集我该如何解决这个问题! 最佳答案 通常,您永远不应该使用float检查相等性(除非您有相同的对象)。在内部,它以更精确的方式表示,即使它在输出到屏幕时没有显示给您。这一基本原则适用于一般计算。有很多方案可以做到这一点,但这里有一个简单的方案,它应该是有意义的:SELECT*FROMtablewherevalueBETWEEN4.599AND

mysql - GROUP BY WHERE range AND const ref 没有临时

一个非常基本的表格,其中包含利用TokuDB存储引擎的多个交易所的工具报价:CREATETABLE`quotes`(`ticker`char(4)NOTNULL,`timestamp`time(3)NOTNULL,`price`decimal(7,2)unsignedNOTNULL,`size`smallint(5)unsignedNOTNULL,`exchange`char(3)NOTNULL,KEY`best_price`(`ticker`,`timestamp`,`exchange`,`price`),KEY`best_size`(`exchange`,`ticker`,`pri

MySQL WHERE、LIMIT 和分页

我有表:documents、languages和document_languages。文档以一种或多种语言存在,这种关系映射到document_languages中。想象一下,现在我想在一个页面上显示文档及其所有语言,并对我的结果集进行分页以在每个页面上显示10条记录。将有一个WHERE语句,指定应检索哪些语言(例如:en、fr、it)。尽管我只想在页面上显示10个文档(LIMIT10),但如果一个文档包含一种以上的语言(大多数情况下是这样),我必须返回10条以上的记录。如何在单个查询中将WHERE语句与LIMIT组合起来以获得我需要的记录? 最佳答案

MySQL:强制查询在WHERE子句中使用带有局部变量的索引

语境我有一个应用程序,该应用程序从一个表中选择一个加权随机条目,对于这些条目,前缀总和(权重)是至关重要的部分。简化的表定义如下所示:CREATETABLEentries(idINTNOTNULLPRIMARYKEYAUTO_INCREMENT,weightDECIMAL(9,3),fenwickDECIMAL(9,3))ENGINE=MEMORY;其中`fenwick`将值存储在`weights`的Fenwick树表示形式内。让每个条目的“范围”跨越其前缀和及其前缀和权重之间。应用程序必须在@r和0之间生成一个随机数SUM(weight),并找到范围包括@r的条目,如下所示:Fenw

mysql - Where 子句中的假值返回所有行?

我有一个看起来像这样的查询:`SELECTid,usernameFROMtable_nameWHEREusername=0`当我运行这个查询时,MySQL返回table_name中的所有行。此外,如果我将0替换为false,我会得到相同的结果。如果我使用null或空字符串,则不会返回任何行(如预期的那样)。用户名列是varchar(50),如果它有所不同的话。那么我的问题是:为什么在该查询中输入0或false会返回表中的所有行?这是MySQL设置吗?这让我有点担心,因为我一直假设上述查询不会返回任何行(在这种特殊情况下),我想知道这是否发生在我的应用程序的其他地方,以及它可能会产生什么

mysql - Rails 3.1 查询使用 attr_encrypted gem 加密的数据库(加密字段上的 where 子句)

我已经使用attr_encryptedgem加密了表中的一个字段。现在我想查询那个特定的字段,将它与我从表单中检索的值进行比较。我该怎么做?编辑:我需要查询一些加密字段。例如:搜索encrypted_email、encrypted_name等(在where子句中使用OR条件) 最佳答案 attr_encrypted拦截了find_by方法,所以你应该可以这样做:classUser'asecretkey'attr_encrypted:password,:key=>'someothersecretkey'endUser.find_by_

mysql - WHERE 子句中的列别名

问题我在查询中使用备用列名(别名),我可以将别名“given_name”用作ORDERBY的一部分,但无法将其用作WHERE子句的一部分。WHERE“given_name”是作为我无法控制的请求的结果传入的,我不知道应该在WHERE条件中使用的实际列名。问题有没有办法/技巧在WHERE子句中使用列别名?有没有办法从别名中找到列名?研究经过一些研究,看起来好像在WHERE子句之后添加了别名。例子SELECTprofile.idASid,given.nameAS'given_name',family.nameAS'family_name'FROMgreen_profileprofileLE

MySQL DB 选择带和不带变音符号的记录。例如 : '.. where something = FÖÖ'

我的表排序规则是“utf8_general_ci”。如果我运行如下查询:SELECT*FROMmytableWHEREmyfield="FÖÖ"我得到的结果是:...myfield="FÖÖ"...myfield="FOO"这是“utf8_general_ci”的默认值吗?我应该使用什么排序规则来只获取myfield="FÖÖ"的记录? 最佳答案 SELECT*FROMtableWHEREsome_fieldLIKE('%ö%'COLLATEutf8_bin) 关于MySQLDB选择带和

mysql - mysql : join or where 中首先发生了什么

假设我有两个表A和B以及以下查询:select*fromAinnerjoinBonA.id=B.idWhereA.id=5mysql先执行join还是where?编辑:因为如果例如A包含1000行,在where条件之后它将只包含1行。在1行表上执行连接效率更高,因此似乎首先执行where然后才执行连接更有效。 最佳答案 join发生在where之前,但是...where子句是对连接返回的所有行的过滤器,但优化器将识别如果索引存在于A.id上,它将被使用从A中检索匹配的行,然后连接将发生,然后理论上where子句将过滤结果,但优化器将